package com.mfm;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.IntStream;
import java.util.stream.Stream;

/**
 * Stream的创建方法
 * @Auther: MFM
 * @Date: 2022/3/1 - 03 - 01 - 13:53
 * @version: 1.0
 */

public class StreamTest {
    static List<String> list = new ArrayList<>();

    //通过集合获取流
    public void f1(){
        //返回一个顺序流
        Stream<String> stream = list.stream();

        //返回一个并行流
        Stream<String> stringStream = list.parallelStream();


    }

    //通过数组创建流
    public void f2(){
        //调用Arrays类的static <T> Stream<T> stream(T[] array)返回一个流
        int[] arr = new int[]{1,2,3,4,5,6,7,8,9};
        IntStream stream = Arrays.stream(arr);
    }

    //通过Stream自身的方法创建实例
    public void  f3(){
        //包装类Integer对象
        Stream<Integer> integerStream = Stream.of(1, 2, 3, 4, 5, 6);

    }

    //创建无限流
    public void f4(){
        //迭代
        //public static<T> Stream<T> iterate(final T seed,final UnaryOperator<T> f)
        //UnaryOperator 接口 继承Function类 Function是传入一个T类型参数返回一个R类型参数 而UnaryOperator是特殊的Function 它传入一个T类型参数返回一个T类型参数
        Stream.iterate(0,t -> t+2).limit(10).forEach(System.out::println);

        //生成
        //public static<T> Stream<T> generate(Supplier<T> s)
        Stream.generate(Math::random).limit(10).forEach(System.out::println);
    }
}
